/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package pessoas.presenter;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import org.jfree.chart.ChartPanel;
import pessoas.collection.Contatos;
import pessoas.grafico.GraficoBarras;
import pessoas.grafico.GraficoColunas;
import pessoas.interfaces.IGrafico;
import pessoas.view.ExibeGraficoView;

/**
 *
 * @author Bush
 */
public class ExibeGraficoPresenter {

    private ExibeGraficoView view;
    private Contatos contatos;

    public ExibeGraficoPresenter(Contatos contatos) {
        view = new ExibeGraficoView(null, true);
        this.contatos = contatos;

        view.getComboTipo().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                try {
                    exibeGrafico();
                } catch (Exception ex) {
                    JOptionPane.showMessageDialog(null, ex.getMessage());
                }
            }
        });

        view.getBtnSair().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                view.dispose();
            }
        });

        view.setLocationRelativeTo(view);
        view.setVisible(true);
    }

    public void exibeGrafico() throws Exception {
        IGrafico grafico;

        if (view.getComboTipo().getSelectedItem().toString().equals("Colunas")) {
            grafico = new GraficoColunas();
        } else if (view.getComboTipo().getSelectedItem().toString().equals("Barras")) {
            grafico = new GraficoBarras();
        } else {
            throw new Exception("Selecione um tipo Válido");
        }

        ChartPanel myChartPanel = new ChartPanel(grafico.exibirGrafico(contatos), true);        
        myChartPanel.setSize(view.getPanelGrafico().getWidth(), view.getPanelGrafico().getHeight()); //setei o tamanho do grafico conforme o painel que usarei  
        myChartPanel.setVisible(true);
        view.getPanelGrafico().removeAll(); //removi todos os componentes que podem estar no meu painel  
        view.getPanelGrafico().add(myChartPanel);
        view.getPanelGrafico().revalidate(); // revalidei meu painel, para que ele se atualize  
        view.getPanelGrafico().repaint();
    }

}
